import axios from 'axios'
import { Message, Loading } from 'element-ui'
import router from '@/router/index'
import store from '@/store'

const instance = axios.create({
  baseURL: 'http://192.168.3.202:7001/api/admin',
  timeout: 5000
})
let loading = null
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // console.log(store.getters.token)
  config.headers.AdminAuthorizationToken = store.getters.token
  loading = Loading.service({
    lock: true,
    text: '拼命加载中...',
    spinner: 'el-icon-loading', // 自定义图标
    background: 'rgba(0, 0, 0, 0.7)'
  })
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  loading.close()

  // const blob = new Blob([response], {
  //   type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;chartset=UTF-8'
  // })
  // // 新窗口打开
  // const url = window.URL.createObjectURL(blob)
  // const a = document.createElement('a')
  // a.href = url
  // // 文件名
  // a.download = this.GetFileName()
  // a.click()
  const link = document.createElement('a')
  try {
    const blob = response.data
    console.log(response)
    // const _fileName = response.headers['content-disposition'].split(';')[1].split('=')[1]
    // 文件名，中文无法解析的时候会显示 _(下划线),生产环境获取不到
    const fileName = decodeURI(response.headers.get('content-disposition')).split('filename=')[1]
    console.log(fileName)
    link.style.display = 'none'
    // 兼容不同浏览器的URL对象
    const url = window.URL || window.webkitURL || window.moxURL
    link.href = url.createObjectURL(blob)
    link.download = fileName
    link.click()
    window.URL.revokeObjectURL(url)
  } catch (e) {
    console.log('下载的文件出错', e)
  }
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  console.log(error)
  loading.close()
  Message.error(error)
  if (error.response.status === 401) {
    console.log('error------->401')
    // Message.error('用户记录已过期，请重新登入')
    router.push({ name: '/login' })
    return Promise.reject(new Error('用户记录已过期，请重新登入'))
  } else if (error.response.status === 500) {
    console.log('error------->500')
    // Message.error('操作失败' + error.code)
  } else if (error.response.status === 503) {
    console.log('error------->500')
    // Message.error('操作失败' + error.code)
  }

  return Promise.reject(error)
})

export default instance
